\newpage
\section{RSA Ver- und Entschlüsselung}
Der Name RSA setzt sich aus den Anfangsbuchstaben der Nachnamen der Entwickler Ronald L. \textbf{R}ivest, Adi \textbf{S}hamir und Leonard M. \textbf{A}dleman zusammen. Das RSA Verfahren wird auch heute noch oft eingesetzt. Das Verfahren gilt ab einer bestimmten Schlüssellänge als sicher. Es gibt verschiedenste Angriffsmöglichkeiten, welche wir weiter unten vorstellen, diese führen jedoch nicht in einem vernünftigen Zeitraum zu einem Ergebnis. \\
Das RSA Verfahren ist verwandt mit dem Rabin-Kryptosystem, welches auch auf Primzahlen beruht. %Verweis%

\subsection{Der Schlüssel}
Dieses Kapitel wurde mit Hilfe der Bücher \textit{RSA and Public-Key Cryptography}\cite{rsa_and_public_key} (Kapitel 8) und \textit{Kryptographie}\cite{kryptographie} (Kapitel 4) erarbeitet.\\[2ex]
%
Für eine sichere Verschlüsselung braucht es einen langen und möglichst zufällig ausgewählten Schlüssel. Der Schlüssel spielt also eine zentrale und wichtige Rolle. Dazu muss er so komplex sein, dass man ihn nicht erraten oder durch Ausprobieren entdecken kann. Um dies zu erreichen, verwendet man Zufallszahlen.
%
\subsubsection{Zufallszahlen generieren}
Zufallszahlen sind ein sehr komplexes Thema. Um sichere Zufallszahlen zu generieren, haben spezialisierte Firmen einen Zufallszahlengenerator (eng. \textit{random number generator} RNG) entwickelt. Diese messen den radioaktiven Zerfall oder beobachten die atmosphärischen Bedingungen in der Umgebung. Die Zahlen, die der RNG auswertet, nennt man \textbf{Seed-Zahlen}. Mit den gewonnenen Seed-Zahlen kann man jetzt einen Algorithmus verwenden, der eine Zahl oder eine Zahlenfolge zurückgibt.\\
%Speziell bei der RSA-Verschlüsselung muss man die Zahl/en überprüfen ob es eine Primzahl ist.
Bei der RSA-Verschlüsselung muss zusätzlich ein Primzahltest durchgeführt werden.
Zur Überprüfung gibt es Verfahren, die wir hier nicht weiter erläutern werden. (siehe Kapitel 4 \cite{rsa_and_public_key}).\\
%
Für die meisten Benutzer sind solche Generatoren viel zu aufwendig und teuer. Deshalb entwickelten Computerhersteller ein Pseudozufallszahlengenerator (eng. \textit{pseudo random number generator} PRNG). Der PRNG erstellt die Seed-Zahlen zum Beispiel aus der momentanen CPU Auslastung oder anderen, nicht vorhersehbaren Ereignissen.\\
Ob die Zufallszahlen geeignet sind oder nicht, ist schwierig zu sagen. Denn wie will man eine Folge von Zufallszahlen beurteilen?\\
Das Einzige, was man errechnen kann, ist die Entropie\footnote{Die Entropie beschreibt das Mass der Unordnung.}. Je höher die Entropie, desto unwahrscheinlicher ist es, dass diese Zahlenfolge ein zweites Mal vorkommt.
%Buch RSA and Public-Key Seite 61 
\subsubsection{RSA-Schlüssel generieren}
Für eine RSA-Verschlüsselung brauchen wir zwei Schlüssel, die voneinander abhängig sind. Einen privaten und einen öffentlichen Key. Im nächsten Abschnitt wird erläutert, wie man dieses Schlüsselpaar ermittelt.% zwei Schlüsser zeugen kann.
%
\paragraph{Public-Key erstellen}\label{sec:public_key}
Als erstes brauchen wir zwei Primzahlen p und q die weit voneinander weg liegen. Je grösser sie sind, desto besser und sicherer wird das Schlüsselpaar. Wie man solche Primzahlen erstellt, möchten wir hier nicht erläutern. Es gibt Methoden, bei denen man mit grosser Wahrscheinlichkeit eine Primzahl generieren kann. Die Zahl muss nach der Generierung überprüft werden.\\
Sind beide Primzahlen gefunden, errechnen wir das RSA-Modul N: %, auch RSA-Modul genannt.
%
\begin{equation}
  N = p \cdot q
  \label{eqn:rsa_modul}
\end{equation}
%
Als nächstes rechnen wir mit der Eulerschen Funktion [\ref{eqn:eulersche_func}] $\varphi$(N) von p und q aus.\\
Zu der Zahl $\varphi$(N) nehmen wir eine weitere zufällige, zu $\varphi(N)$ \textbf{teilerfremde} Zahl e, die den RSA Verschlüsselungs-Exponenten bildet.\\
Die Zahlen N und e bilden zusammen den öffentlichen Schlüssel.
\paragraph{Private-Key erstellen}
Wir haben bei der Erstellung des public Keys die Zahlen für N und e berechnet. Als nächstes wird aus diesen beiden Zahlen d errechnet. d wird als Entschlüsselungs-Exponent als privater Schlüssel benötigt.\\
Mit dem erweiterten Euklidischen Algorithmus [\ref{eqn:erw_euklid_algo}] und der Modularen Inverse wird d berechnet.\\
% Has grad dri gno fürs label, bitte überprüefe. Denis
\begin{equation}
	e \cdot d = 1 \bmod{ \varphi(N) } 
	\label{eqn:rsa_private_key_erstellen}
\end{equation}
%
%
% TODO: Auf modulare inverse hinweisen!!!!!
%\begin{flalign*}
%  e * d \bmod(\varphi(n)) = 1\\
%  e * d \equiv 1 (\bmod \varphi(N) )
%\end{flalign*}
%
%stimmt. \\
Nun ist der private Schlüssel d und das RSA-Modul N für die Entschlüsselung bekannt.
% Nachdem d berechnet ist, ist der private Schlüssel mit den Zahlen d und N.
